let debounceTimer = null

export function debounce(callback, duration) {
  return function () {
    // return function (...args) {
    // let ctx = this
    if (debounceTimer) clearTimeout(debounceTimer)
    debounceTimer = setTimeout(() => {
      // callback().apply(ctx, args)
      callback()
    }, duration)
  }
}

// const debounce = (fn, t) => {
//   let timer
//   return function () {
//     if (timer) clearTimeout(timer)
//     timer = setTimeout(function () {
//       fn()
//     }, t)
//   }
// }

// const throttle = (fn, t) => {
//   let timer = null
//   return function () {
//     if (!timer) {
//       timer = setTimeout(function () {
//         fn()
//         timer = null
//       }, t)
//     }
//   }
// }

// function debounce(func, wait) {
//     let timeout;

//     return function () {
//         let context = this; // 保存this指向
//         let args = arguments; // 拿到event对象

//         clearTimeout(timeout)
//         timeout = setTimeout(function(){
//             func.apply(context, args)
//         }, wait);
//     }
// }
